# 导入需要的工具
import pandas as pd  # 用于处理表格数据
from collections import Counter  # 用于统计标签
from config import Config  # 导入配置类

def data_eda():
    # 创建配置对象，获取数据文件路径
    config = Config()
    # todo 1.读取数据并查看基本信息
    data = pd.read_csv(config.train_datapath, sep='\t', names=['text', 'label'])  # 读取文件，列名为“文本”和“标签”
    print("前5行数据：")
    print(data.head(5))  # 显示前5行，了解数据长什么样
    print(f"总数据量：{len(data)} 行")  # 显示总行数
    print('-' * 60)

    # todo 2.统计标签分布
    label_counts = Counter(data['label'])  # 数一数每个标签出现了几次
    print(f"类别数据统计:{label_counts}")
    for label, count in label_counts.items():
        # todo 3.输出每个标签的次数, 计算标签比例
        percent = (count / len(data)) * 100  # 计算百分比
        print(f"标签 {label},出现{count} 次,占比{percent:.2f}%")
    print('-' * 60)

    # todo 4.分析文本长度
    data['text_length'] = data['text'].str.len()  # 计算每条文本的字符数
    print(f"文本长度前10行:{data[['text', 'text_length']].head(10)}")  # 只显示文本和长度列
    print("\n文本长度统计：")
    print(f"平均长度：{data['text_length'].mean():.2f} 字符")  # 平均值
    print(f"长度标准差：{data['text_length'].std():.2f} 字符")  # 标准差
    print(f"最大长度：{data['text_length'].max()} 字符")  # 最大值
    print(f"最小长度：{data['text_length'].min()} 字符")  # 最小值

if __name__ == '__main__':
    data_eda()